package timing.jframe4l.note;

/**
 * Description:
 * <br>网站：<a href="http://www.gitee.com/fengxici">Fengxici</a>
 * <br>Copyright (c),2017,Fengxici
 * <br>This program is protected by copyright laws.
 * <br>Program Name:JavaDocTest
 * <br>Date:2018/1/2
 * <br> javadoc命令使用方法，例：
 * <br> javadoc timing\\jframe4l\\note\\CommentTest.java -encoding utf-8  -d G:/jFrame4l/JavaNote/site -windowtitle 测试 -doctitle 学习 javadoc 工具的测试 API 文档 -header 我的类 -version -author Fengxici
 *
 * @author Fengxici
 * @version 1.0
 * Created by Fengxici on 2018/1/2.
 */
public class JavaDocTest {
    /**
     * JavaDocTest类的测试构造器
     */
    public JavaDocTest() {

    }

    //==================================整型=====================================
    /**
     * java整型-byte 8bit 表示范围 -128—127
     */
    private byte _byte = 65;
    /**
     * java整型—short 16bit 表示范围 -32768—32767
     */
    private short _short = 100;
    /**
     * java整型—int 32bit 表示范围 2147483648—2147483647
     */
    private int _int = 50000;
    /**
     * java整型—long 必须使用L(l)后缀 6bit 表示范围 -2的63次方—2的63次方-1
     */
    private long _long = 3000000000L;

    /**
     * 以0开头的整数值是八进制的整数
     */
    private int octalValue = 013;
    /**
     * 以0x或0X开头的数值是十六进制
     */
    private int hexValue = 0Xa3;
    /**
     * Java7新增对二进制整数的支持，以0b或者0B开头
     */
    private int binValue = 0B011011011;
    private long binLongValue = 0B1000001000000000000000000000000000000000011L;
    /**
     * Java7引入的新功能，可以在数值（整型或浮点型）中使用下划线，以便可以更直观的分辨数值中到底包含多少位
     */
    private int binSplitValue = 0B1111_0000_1100_1010_0011_1001_1001;
    ///////////////////////////////////字符型////////////////////////////////////////
    /**
     * 字符型 16bit 相当于一个无符号的16位整数，表示范围0—65535 直接指定单个字符作为字符值
     */
    private char _char = 'a';
    /**
     * 使用转义字符来作为字符值
     */
    private char enterChar = '\r';
    /**
     * 使用Unicode编码值来指定字符值
     */
    private char unicodeChar = '\u9999';
    /**
     * String型变量，它是字符串实例的引用，是一个引用类型的变量
     */
    private String name = "张三";

    //=============================浮点型===============================
    /**
     * float型 32bit 末尾必须加F或f
     */
    private float _float = 3.1415926F;
    /**
     * Java浮点型默认是double类型 末尾D或者d可选
     */
    private double _double = 0.0;
    /**
     * 负无穷大 Float.NEGATIVE_INFINITY亦可 所有负无穷大都相等
     */
    private double _negativeDouble = Double.NEGATIVE_INFINITY;
    /**
     * 正无穷大 Double.POSITIVE_INFINITY亦可 所有正无穷大都相等
     */
    private double _positiveDouble = Float.POSITIVE_INFINITY;
    /**
     * 非数 Double.NaN亦可 它不与任何数值相等，设置和HNaN都不相等
     */
    private double nanDouble = Float.NaN;
    /**
     * Java7引入的新功能，可以在数值（整型或浮点型）中使用下划线，以便可以更直观地分辨数值中到底包含多少位
     */
    private double pi = 3.14_15_92_65_36;

    ////////////////////////////////布尔型///////////////////////////////////
    /**
     * 只能是true或者false，8bit
     */
    private boolean _boolean = true;


    /**
     * 程序入口
     * @param args 入口接收函数
     */
    public static void main(String[] args) {
        System.out.println("Hello World!");
        //直接量赋值 常量池-->指的是在编译期被确定，并被保存在已编译的.class文件中的一些数据，它包括关于类、方法、接口中的常量，也包括字符串直接量
        String author = "Fengxici";
        String s0 = "hello";
        String s1 = "hello";
        String s2 = "he" + "llo";
        //true Java确保每个字符串常量只有一个副本，不会产生多个副本。s0和s1都是字符串常量，在编译时已确定，所以是true
        System.out.println(s0 == s1);
        //true "he"和"llo"都是字符串常量，当一个字符串由多个字符串创两连接而成时，它本身也是字符串常量，在编译期就被解析成一个字符串常量
        System.out.println(s0 == s2);
        //加法运算符 +=
        System.out.println("加法运算符"+(5.2+3.1));
        //减法运算符 -+
        System.out.println("减法运算符"+(3-4));
        //乘法运算符 *=
        System.out.println("乘法运算符"+(2.5*7));
        //除法运算符 /=
        System.out.println("除法运算符,浮点"+(5.0/3.0));
        System.out.println("除法运算符,整型"+(5/3));
        //求余运算符 %=
        System.out.println("求余运算符"+(128%3));
        System.out.println("5对0.0求余的结果是："+(5%0.0));//NaN
        System.out.println("-5.0对0求余的结果是："+(-5.0%0));//NaN
        System.out.println("0对5.0求余的结果是："+(0%5.0));//0.0
        System.out.println("0对0.0求余的结果是："+(0%0.0));//NaN
        //自加运算符
        int a=5;
        System.out.println("后加"+(a++ + 6));
        System.out.println("先加"+(++a + 6));
        int seed=0;
        for(int i =0;i<100;i++){
            seed = seed++;
            //seed=++seed;//比较看看
        }
        System.out.println("seed循环自加"+seed);
        //自减
        System.out.println("后加"+(a-- + 6));
        System.out.println("先加"+(--a + 6));
        for(int i =0;i<100;i++){
            seed = seed--;
            //seed=--seed;//比较看看
        }
        System.out.println("seed循环自减"+seed);
        //按位与 &=。当两位同时为1时返回1。本例结果1
        System.out.println("按位与"+(5&9));
        //按位或 |=。只要有一位为1即可返回1。本例结果13
        System.out.println("按位或"+(5|9));
        //按位异或 ^=。当两位相同时返回0，不同时返回1
        System.out.println("按位异或"+(5^9));
        //取反。将操作数的每个位（包括符号位）全部取反。本例结果4
        System.out.println("取反"+(~-5));
        //左移运算符 <<=
        System.out.println("左移运算符"+(4<<1));
        //右移运算符 >>=。左边空出来的补充原来数字的符号位，正数补0，负数补1
        System.out.println("右移运算符"+(4>>1));
        //无符号右移运算符.左边空出来的补0 >>>=
        System.out.println("无符号右移运算符"+(-5>>>1));
        //大于
        System.out.println("大于"+(5>4));
        //大于等于
        System.out.println("大于等于"+(5>=4));
        //小于
        System.out.println("小于"+(5<4));
        //小于等于
        System.out.println("小于等于"+(5<=4));
        //等于
        System.out.println("等于"+(5==4));
        //不等于
        System.out.println("不等于"+(5!=4));
        //逻辑与 一假必假 左向右，两个都判断
        System.out.println("逻辑与"+((5>4)&&(3>2)));
        //不短路与
        System.out.println("不短路与"+((5>6)&(3>2)));
        //逻辑或 一真必真 左向右，遇真停止比较
        System.out.println("逻辑或"+((5>4)&&(4>6)));
        //不短路或
        System.out.println("不短路或"+((5>4)&&(4>6)));
        //逻辑非
        System.out.println("逻辑非"+(!(5>4)));
        //逻辑异或 不同返回true，相同返回false
        System.out.println("逻辑异或"+((5>6)^(4>3)));
        //三目运算符
        System.out.println("三目运算符"+(5>4?"大":"小"));
    }


    /**
     * 一个得到打招呼字符串的方法
     *
     * @param name 该参数指定向谁打招呼
     * @return 返回打招呼的字符串
     */
    public String hello(String name) {
        this.name = name;
        return name + ",你好";
    }
}
